package queue

import (
	"yunj/pkg/yunj/core/enum/queueenum"
)

// 队列工作调度器
type jobScheduler struct {
	Queues []QueueInterface
}

var JobScheduler = &jobScheduler{}

// 开启调度器工作
func (s *jobScheduler) Start(queues []QueueInterface) (err error) {
	s.Queues = queues
	for _, q := range queues {
		// 判断是否启用
		if q.GetHandleStatus() != queueenum.STATUS_RUNNING {
			continue
		}
		err = q.StartHandle()
		if err != nil {
			return
		}
	}
	return
}

// 停止调度器工作
// 确保并发安全，引入锁
func (s *jobScheduler) Stop() {
	for _, q := range s.Queues {
		q.StopHandle()
	}
}
